// 一、在utils request.js中 二次封装axios
import axios from 'axios'
import Cookie from 'js-cookie'
import router from '../router'
import { Message } from 'element-ui'
// 1. 创建一个实例
const request = axios.create({
  baseURL: '/api', // vuecli node 做了反向代理 须以/api开头
  timeout: 8000
})

// 2. 添加请求和响应拦截器
// 请求拦截
request.interceptors.request.use(function (config) {
  // 将缓存中的token 请求头中传给后端
  const token = Cookie.get('token')
  if (token) {
    config.headers.token = token
  }
  return config
}, function (error) {
  return Promise.reject(error)
})
// 响应拦截
request.interceptors.response.use(function (response) {
  // 判断后端返回的code码  是否包含错误信息
  if (response.data.code === 401 || response.data.code === 403) {
    // 清除token 不再保留错误的token
    Cookie.remove('token')
    Cookie.remove('userInfo')
    Cookie.remove('role')
    Message({
      message: 'token错误',
      type: 'error',
      onClose: () => {
        router.push('/login')
        router.go(0)
      }
    })
  }
  return response
}, function (error) {
  return Promise.reject(error)
})
// 3. 导出 request
export default request
